\begin{frame}[fragile]
\frametitle{Treść zadania}
\begin{block}{}
Dla podanego $x$ obliczyć z dokładnością $\varepsilon$ 
sumę szeregu \vspace{-5pt}
\[
S(x) = 
1 - \frac{1}{4} \cdot x + \frac{1}{4\cdot 7} \cdot x^2 - \frac{1}{4\cdot 7\cdot 10} \cdot x^3  + \dots
\]
\end{block}
Czy jest potrzeba sumować w nieskończoność?
\begin{enumerate}
\item Mianownik bardzo szybko rośnie
\item Kolejne składniki szeregu (dalej nazywane ,,przyrostami'') stają się coraz mniejsze co do wartości bezwzględnej
\item Przerywamy ich sumowanie, gdy przestają wpływać na zadaną dokładność $\varepsilon$ 
\item {\small Matematycznie trzeba dowieść, że od pewnego $k$ suma wszystkich przyrostów do nieskończoności
      jest mniejsza od zadanej dokładności}
\item Uproszczone rozwiązanie: przerywamy dodawanie, gdy wartość bezwzględna przyrostu
      jest mniejsza od $\varepsilon$
\end{enumerate}

\end{frame}

% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

\begin{frame}[fragile]
\frametitle{Przypadek testowy}
\begin{block}{Skąd mamy wiedzieć, że program działa poprawnie?}
\begin{enumerate}
\item
Przygotowujemy przykładowe dane  $x$ i  $\varepsilon$ 
\item 
Znajdujemy rozwiązanie zadania bez algorytmu
\end{enumerate}
\end{block}
Niech $\varepsilon=0.001$ i $x=1.0$ obliczamy kolejne przyrosty 
\begin{tabular}{ll}
k=0 & $p_0(1.0)  = 1$ \\
k=1 & $\displaystyle p_1(1.0) = -\frac{1}{4}\cdot 1 = -\frac{1}{4}           = $ -0.250000\\
k=2 & $\displaystyle p_2(1.0) =  \frac{1}{4\cdot 7}\cdot 1^2                 = \frac{1}{28} = $ 0.035714\\
k=3 & $\displaystyle p_3(1.0) = -\frac{1}{4\cdot 7\cdot 10}\cdot 1^3         = -\frac{1}{280} = $ -0.003571\\
k=4 & $\displaystyle p_4(1.0) =  \frac{1}{4\cdot 7\cdot 10\cdot 13}\cdot 1^4 = \frac{1}{3640} = $ 0.000275\\
\end{tabular}
\vspace{6pt}

Piąty przyrost jest mniejszy od 0.001. Można go pominąć.
\[
S = 1 - \frac{1}{4} + \frac{1}{28} - \frac{1}{280} + \frac{1}{3640} = 0.782143
\]
\end{frame}

% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

\begin{frame}[fragile]
\frametitle{Zależność między przyrostami}

\begin{block}{Jak program ma wyznaczać kolejne przyrosty?}
A jak człowiek je wyznacza?
\end{block}

\[
S(x) = 
\underbrace{1}_{p_0(x)} + 
\underbrace{\left(- \frac{1}{4} \cdot x\right)}_{p_1(x)} + 
\underbrace{\left(\frac{1}{4\cdot 7} \cdot x^2 \right)}_{p_2(x)} + 
\underbrace{\left(- \frac{1}{4\cdot 7\cdot 10} \cdot x^3 \right)}_{p_3(x)} + \dots
\]
Szukamy poprzedniego przyrostu w nowym przyroście
\begin{eqnarray*}
p_0(x) &=& 1 \\
p_1(x) &=& 1 \cdot \left( - \frac{1}{4} \cdot x \right ) 
 = p_0(x) \cdot  \left( - \frac{1}{4} \cdot x \right ) \\
p_2(x) &=& \left( - \frac{1}{4} \cdot x \right ) \cdot \left( - \frac{1}{7} \cdot x \right )
 = p_1(x) \cdot \left( - \frac{1}{7} \cdot x \right ) \\
p_3(x) &=& \left(\frac{1}{4\cdot 7} \cdot x^2 \right) \cdot \left( - \frac{1}{10} \cdot x \right ) 
 = p_2(x) \cdot \left( - \frac{1}{10} \cdot x \right ) \\
\end{eqnarray*}

\end{frame}

% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

\begin{frame}[fragile]
\frametitle{Zależności zapisana jako iteracja}
Potrzebujemy kroku iteracji, będzie nim numer przyrostu liczony od zera.\\

Szukamy wzoru na iloraz kolejnych przyrostów.

\begin{tabular}{c|c|c|c|c}
$k$ & $p_k(x)$ & $p_{k-1}(x)$ & $q_k(x)$ & $3k+1$ \\ \hline
0 & $1$ & --- & --- & $1$ \\ 
& & & & \\
1 & $\displaystyle - \frac{1}{4} \cdot x$ & $1$ & $\displaystyle - \frac{1}{4} \cdot x$ & 4 \\
& & & & \\
2 & $\displaystyle \frac{1}{4\cdot 7} \cdot x^2$ & $\displaystyle - \frac{1}{4} \cdot x$ 
  & $\displaystyle - \frac{1}{7} \cdot x $ & 7 \\ 
& & & & \\  
3 & $\displaystyle - \frac{1}{4\cdot 7\cdot 10} \cdot x^3 $ & $\displaystyle \frac{1}{4\cdot 7} \cdot x^2$ 
  & $\displaystyle - \frac{1}{10} \cdot x $ & 10 \\    
\end{tabular}


\[
p_k(x) = 
\left\{
\begin{array}{ll}
1 & \text{dla}\; k = 0 \\
p_{k-1}(x) \cdot q_{k}(x)
 = p_{k-1}(x) \cdot \displaystyle
\left( - \frac{1}{3k+1} \cdot x \right)
& \text{dla}\; k > 0
\end{array}
\right.
\]

\end{frame}
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

\begin{frame}[fragile]
\frametitle{Słowny opis algorytmu}

\begin{enumerate}\setlength{\itemsep}{2pt}
\item
Ustawiam początkową wartość sumy $S=0$
\item
Ustawiam początkową wartość licznika iteracji $k=0$
\item
Ustawiam początkową wartość przyrostu $p=1$
\item 
Jeżeli wartość bezwzględna przyrostu $|p|$
jest mniejsza od zadanej dokładności $\varepsilon$,
to kończę obliczenia.
\item 
Dodanie przyrostu $p$ do sumy szeregu $S$
\item 
Inkrementuję licznik iteracji $k = k + 1$
\item
Obliczenie $k$-tego przyrostu 
\[ p = p \cdot \left(-1 \cdot \frac{1}{3k+1} \cdot x\right) \]
\item 
Powrót do kroku 4.
\end{enumerate}


\end{frame}
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

\begin{frame}[fragile]
\frametitle{Realizacja w języku C {\sf\large (fragment programu)}}
\begin{verbatim}
  int k;
  float s, p, eps, x;
  printf("Podaj x: ");  scanf("%f", &x);
  printf("Podaj dokladnosc: ");  scanf("%f", &eps);

  s = 0;
  k = 0;
  p = 1;
  while (fabs(p) > eps) {
    s += p;
    printf("k=%2d \t p=%.7f \t  s=%.7f \n", k, p, s);
    k++;
    p *= -x/(3*k+1);
  }
\end{verbatim}
Uzasadnij deklarację zmiennych określonych typów.
\end{frame}
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



% Zależność między przyrostami
% iteracja z poprzedniego
% wuznaczenie iteracjio
% krok - zerowy punkt startowy
% typy zmiennych